home *** CD-ROM | disk | FTP | other *** search
- property pActive, pMoveFlag, pImageResultList, pspritenum, pImageCode, pDir, pDistance, pDX, pAnchorSprite, pKeyLineSprite
- global gSpriteList, gNumOfSpriteChannels, gCenterSprite
-
- on beginSprite me
- pspritenum = me.spriteNum
- pDistance = 40
- pDX = 8
- pMoveFlag = 0
- pDir = #scrollRight
- pAnchorSprite = 58
- pKeyLineSprite = 81
- pActive = 0
- end
-
- on initImage me, imageResultList, imageCode
- pActive = 1
- pImageResultList = imageResultList
- pImageCode = imageCode
- sprite(pspritenum).member = pImageCode
- end
-
- on moveImage me, dir
- if pActive then
- pDir = dir
- pMoveFlag = 1
- end if
- end
-
- on stopImage me
- if pActive then
- pMoveFlag = 0
- end if
- end
-
- on mouseUp me
- localJumpToZoomed(pImageCode)
- end
-
- on exitFrame me
- if pActive then
- if pMoveFlag then
- X = sprite(pspritenum).locH
- if pDir = #scrollRight then
- firstImageCode = sprite(gSpriteList[1]).pImageCode
- pos = pImageResultList.getPos(firstImageCode)
- if (X < 900) or (pos = 1) then
- if pos <> 1 then
- X = X + pDX
- else
- if sprite(gSpriteList[1]).locH < 400 then
- X = X + pDX
- end if
- end if
- else
- pImageCode = pImageResultList[pos - 1]
- sprite(pspritenum).member = pImageCode
- h = sprite(gSpriteList[1]).locH
- w = sprite(gSpriteList[1]).width
- w2 = sprite(pspritenum).member.width
- X = h - (w / 2) - pDistance - (w2 / 2)
- deleteAt(gSpriteList, gNumOfSpriteChannels)
- gSpriteList.addAt(1, pspritenum)
- end if
- else
- lastImageCode = sprite(gSpriteList[gNumOfSpriteChannels]).pImageCode
- pos = pImageResultList.getPos(lastImageCode)
- if (X > -100) or (pos = pImageResultList.count) then
- if pos <> pImageResultList.count then
- X = X - pDX
- else
- if sprite(gSpriteList[gNumOfSpriteChannels]).locH > 400 then
- X = X - pDX
- end if
- end if
- else
- pImageCode = pImageResultList[pos + 1]
- sprite(pspritenum).member = pImageCode
- h = sprite(gSpriteList[gNumOfSpriteChannels]).locH
- w = sprite(gSpriteList[gNumOfSpriteChannels]).width
- w2 = sprite(pspritenum).member.width
- X = h + (w / 2) + pDistance + (w2 / 2)
- deleteAt(gSpriteList, 1)
- append(gSpriteList, pspritenum)
- end if
- end if
- sprite(pspritenum).locH = X
- end if
- end if
- end
-
- on centerSprite me
- if pActive then
- if sprite pspritenum intersects pAnchorSprite then
- thisSpritePos = getPos(gSpriteList, pspritenum)
- sprite(pspritenum).locH = 400
- if thisSpritePos = 1 then
- repeat with i = 2 to gNumOfSpriteChannels
- newloch = (sprite(gSpriteList[i]).width / 2) + pDistance + (sprite(gSpriteList[i - 1]).width / 2)
- sprite(gSpriteList[i]).locH = sprite(gSpriteList[i - 1]).locH + newloch
- end repeat
- else
- repeat with j = thisSpritePos - 1 down to 1
- newloch = (sprite(gSpriteList[j]).width / 2) + pDistance + (sprite(gSpriteList[j + 1]).width / 2)
- sprite(gSpriteList[j]).locH = sprite(gSpriteList[j + 1]).locH - newloch
- end repeat
- repeat with j = thisSpritePos + 1 to gNumOfSpriteChannels
- newloch = (sprite(gSpriteList[j]).width / 2) + pDistance + (sprite(gSpriteList[j - 1]).width / 2)
- sprite(gSpriteList[j]).locH = sprite(gSpriteList[j - 1]).locH + newloch
- end repeat
- end if
- updateStage()
- member("currentImageCode").text = pImageCode
- sprite(pKeyLineSprite).rect = sprite(pspritenum).rect
- end if
- end if
- end
-